必須先設定完名稱與email才能正式開始使用Git的各項功能。基本上設定一次就可以了。
git config --global user.name gary3123
git config --global user.email ban103123@gmail.com
設定完成之後可以在本地端先開一個作業用資料夾,並初始化。
gary@aweideMacBook-Pro ~ % mkdir git_practise
gary@aweideMacBook-Pro ~ % cd git_practise
gary@aweideMacBook-Pro git_practise % git init
在這個資料夾就可以進行程式的版本控管了。
可以在這邊新增一個程式檔案
#將指定檔案(或資料夾)加入版本控制(Staging Area and Tracked)。用.可加入(刪除)全部
git add <files or folders>
#可以確認本地端檔案的資料及狀態
git status
新增完之後輸入git status 會出現這個資料夾的所有程式檔案,剛剛新增的資料就會是Staged的狀態。(如下圖)
如果將檔案修改的話,他就會是modified的狀態
每一次修改檔案的時候記得要add進Staging裡
#將更改的檔案新增到暫存
git add "<file>"
再來就可以將檔案提交到本地的倉庫
#提交目前的異動並設定摘要說明
git commit -m "<message>"
指令 | 說明 |
---|---|
git config --list | 列出本地 git 相關設定 |
git config --global user.name | 設定(全域的)名稱 |
git config --global user.email | 設定(全域的)email |
git init | 初始化。建立本地端 Repository |
git clone <endpoint_url> | 複製遠端的 Repository 檔案到本地端 |
rm -rf .git | 刪除本地端 Repository |
git status | 檢查本地端檔案異動狀態 |
git add | 將指定檔案(或資料夾)加入版本控制(Staging Area and Tracked)。用.可加入(刪除)全部 |
git rm --cached | 將指定的檔案移除追蹤 |
git restore | 從 Staging Area 中復原 Working Directory 中的檔案 |
git restore --staged | 從 倉庫中復原 Staging Area 中的檔案 |
git commit -m "" | 提交目前的異動並設定摘要說明(可以不加 -m 及說明),但正常習慣下都會加說明 |
git reset [mode] | 拆掉 commit。mode可選、point 指向 commit (慎用) |
git log | 查看先前的 commit 紀錄 |
point可用 HEAD^(前一個 commit)、HEAD^^(前兩個commit)、HEAD~3(前三個 commit)或 hash 值。
在開發軟體的時候,可能同時會有多人在開發同意功能或修復錯誤,也有可能會有多個發布版本的存在,並且需要針對每個版本進行維護。
為了能支援同時進行數個功能的增加或版本控制,Git具備了分支功能。
分支是為了將修改紀錄的整體流程分開儲存,讓分開的分支不受其他分支的影響,所以在同一個數據庫裡可以同時進行多個不同的修改。
指令 | 說明 |
---|---|
git branch <branch_name> | 建立新分支 |
git branch -D <branch_name> | 刪除分支 |
git checkout <branch_name> | 切換分支 |
git branch -b <branch_name> [<endpoint_name>/] | 建立並切換至新分支 |
git branch -m | 重新命名分支名稱 |
當一個程式需要多人分工完成時,遠端Git上去是一個很好的辦法,不僅可以做到版本控制,也可以同步大家的進度。
當自己的本地端倉庫建立好之後,我們也需要去Github創建空的倉庫。
創建好之後,複製紅框的字串(我們用SSH)並貼到下面的指令
#add 後面直接貼Github提供的SSH、即可
git remote add <endpoint_name> <endpoint_url>
還要輸入以下指令將檔案Push上去
#預設的endpoint_name是origin,branch_name是master
git push <endpoint_name> <branch_name>
記得在開始之前先建立一個空資料夾,以免遠端複製下來的資料整理複雜。
建立完空資料夾之後,將遠端資料庫的連結複製下來。
並輸入以下指令,便可以將遠端的資料複製下來了
git clone <endpoint_url>
若今天你把資料改好,想上傳到遠端,但遠端倉庫多了一份別人改的版本,這時候自己的版本就會和遠端的版本不一樣,上傳會有衝突。(如下圖)
這時候就要將自己的版本先拆掉(reset)並拉取遠端的分支紀錄合併起來。
先輸入拆掉commit的指令
#point可用 HEAD^(前一個 commit)、HEAD^^(前兩個commit)、HEAD~3(前三個 commit)或 hash 值
git reset [mode] <point>
再輸入拉取遠端的分支紀錄且合併起來的指令
git pull <endpoint_name> <branch_name>
在變動的程式中就會出現自己本地改的和遠端的版本不同之處。
選擇一樣做更動,再來就add->commit->push到遠端,就會上傳成功了。
#將檔案再加入Staging Area
git add "<file>"
#提交到Local Reposiltory
git commit -m "<message>"
#Push到Remote(遠端) Reposiltory
git push <endpoint_name> <branch_name>
push失敗大部分是因為有衝突,快速解法是先pull再重新push一次。
合併分支不只有merge,還有rebase。
預設為fast-forward(快轉)合併。可選擇non fast-forward(快轉)合併。
指令 | 說明 |
---|---|
git remote -v | 顯示遠端倉庫 |
git remote add <endpoint_name> <endpoint_url> | 新增遠端倉庫 |
git remote remove <endpoint_name> | 移除遠端倉庫 |
git push <endpoint_name> <endpoint_url> | 推送本地倉庫到遠端倉庫 |
git fetch <endpoint_name> | 拉取遠端分支紀錄同步到本地 |
git merge | 合併分支紀錄 |
git pull | 拉取遠端分支並合併。fetch+merge |